downloads](http://cranlogs.r-pkg.org/badges/ggthemes)](https://github.com/metacran/cranlogs.app)
Some extra geoms, scales, and themes for ggplot, including:
geom_rangeframe : Tufte’s range framegeom_tufteboxplot: Tufte’s box plottheme_calc: a theme based on LibreOffice Calc.theme_economist: a theme based on the plots in the The Economist magazine.theme_excel: a theme replicating the classic ugly gray charts in Exceltheme_few: theme from Stephen Few’s “Practical Rules for Using Color in Charts”.theme_fivethirtyeight: a theme based on the plots at fivethirtyeight.com.theme_gdocs: a theme based on Google Docs.theme_hc: a theme based on Highcharts JS.theme_pander: a theme to use with the pander package.theme_solarized: a theme using the solarized color palette.theme_stata: themes based on Stata graph schemes.theme_tufte: a minimal ink theme based on Tufte’s The Visual Display of Quantitative Information.theme_wsj: a theme based on the plots in the The Wall Street Journal.scale_colour_calc, scale_shape_calc: color and shape palettes from LibreOffice Calc.scale_colour_colorblind: Colorblind safe palette from http://jfly.iam.u-tokyo.ac.jp/color/.scale_colour_economist: colors used in plots in plots in The Economist.scale_colour_excel: colors from new and old Excel.scale_colour_few: color palettes from Stephen Few’s “Practical Rules for Using Color in Charts”.scale_colour_gdocs: color palette from Google Docs.scale_colour_hc: a theme based on Highcharts JS.scale_colour_solarized: Solarized colorsscale_colour_stata, scale_shapes_stata, scale_linetype_stata: color, shape, and linetype palettes from Stata graph schemes.scale_colour_tableau, scale_shape_tableau: color and shape palettes from Tableau.scale_colour_pander, scale_fill_pander: scales to use with the pander package.scale_shape_cleveland, scale_shape_tremmel, scale_shape_circlefill: shape scales from classic works in visual perception: Cleveland, Tremmel (1995), and Lewandowsky and Spence (1989).Most of these scales also have associates palettes, as used in the scales package.
bank_slopes: Find the optimal aspect ratio to bank slopes to 45 degreesTo install the stable version from CRAN,
install.packages('ggthemes', dependencies = TRUE)
Or, to install the development version from github, use the devtools package,
library("devtools")
install_github(c("hadley/ggplot2", "jrnold/ggthemes"))
Note: at the moment the development version of ggthemes will only work with the development version of ggplot2, and is not compatible with the version of ggplot2 on CRAN.
Contributions are welcome! If you would like to add a theme, scales, etc., fork the repository, add your theme, and submit a pull request.
library("ggplot2")
library("ggthemes")
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
diamond_plot <-
ggplot(dsamp, aes(x = carat, y = price, colour=cut)) +
geom_point() +
ggtitle("Diamonds Are Forever")
Minimal theme and geoms based on plots in The Visual Display of Quantitative Information.
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
geom_rangeframe() +
theme_tufte() +
scale_x_continuous(breaks = extended_range_breaks()(mtcars$wt)) +
scale_y_continuous(breaks = extended_range_breaks()(mtcars$mpg))
The function geom_tufteboxplot creates several variants of Tufte’s minimal-ink boxplots. For a boxplot with a point indicating the median, a gap indicating the interquartile range, and lines for whiskers:
ggplot(mtcars, aes(factor(cyl), mpg)) +
theme_tufte(ticks=FALSE) +
geom_tufteboxplot()
For a boxplot with an offset line indicating the interquartile range and a gap indicating the median:
(ggplot(mtcars, aes(factor(cyl), mpg))
+ theme_tufte(ticks=FALSE)
+ geom_tufteboxplot(median.type = "line")
)
For a boxplot with an line indicating the interquartile range, a gap indicating the median, and points indicating the minimum and maximum:
(ggplot(mtcars, aes(factor(cyl), mpg))
+ theme_tufte(ticks=FALSE)
+ geom_tufteboxplot(median.type = "line", whisker.type = 'point', hoffset = 0)
)
For a boxplot with a wide line indicating the interquartile range, a gap indicating the median, and lines indicating the minimum and maximum
(ggplot(mtcars, aes(factor(cyl), mpg))
+ theme_tufte(ticks=FALSE)
+ geom_tufteboxplot(median.type = "line", whisker.type = 'line', hoffset = 0,
width = 3)
)
A theme that approximates the style of plots in The Economist magazine.
diamond_plot +
theme_economist() +
scale_colour_economist()
A theme and color and fill scales based on the Solarized palette.
The light theme.
diamond_plot +
theme_solarized() +
scale_colour_solarized("blue")
The dark theme.
diamond_plot +
theme_solarized(light = FALSE) +
scale_colour_solarized("red")
An alternative theme.
diamond_plot +
theme_solarized_2(light = FALSE) +
scale_colour_solarized("blue")
Themes and scales (color, fill, linetype, shapes) based on the graph schemes in Stata.
ggplot(dsamp, aes(x = carat, y = price, colour = cut)) +
geom_point() +
theme_stata() +
scale_colour_stata() +
ggtitle("Plot Title")
For that classic ugly look and feel. For ironic purposes only. 3D bars and pies not included. Please never use this theme.
ggplot(dsamp, aes(x = carat, y = price, colour = cut)) +
geom_point() +
theme_excel() +
scale_colour_excel()
ggplot(diamonds, aes(x = clarity, fill = cut)) +
geom_bar() +
scale_fill_excel() +
theme_excel()
Inverse of theme_gray, i.e. white plot area and gray background.
ggplot(dsamp, aes(x = carat, y = price, colour=cut)) +
geom_point() +
theme_igray()
Theme and color palette based on the plots at fivethirtyeight.com.
ggplot(subset(mtcars, cyl != 5),
aes(x = hp, y = mpg, colour = factor(cyl))) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
scale_color_fivethirtyeight("cyl") +
theme_fivethirtyeight()
Color, fill, and shape scales based on those used in the Tableau software.
ggplot(dsamp, aes(x = carat, y = price, colour=cut)) +
geom_point() +
theme_igray() +
scale_colour_tableau()
ggplot(dsamp, aes(x = carat, y = price, colour=cut)) +
geom_point() +
theme_igray() +
scale_colour_tableau("colorblind10")
Color palette and theme based on Stephen Few’s “Practical Rules for Using Color in Charts”.
ggplot(dsamp, aes(x = carat, y = price, colour=cut)) +
geom_point() +
theme_few() +
scale_colour_few()
Theme and some color palettes based on plots in the The Wall Street Journal.
ggplot(dsamp, aes(x = carat, y = price, colour=cut)) +
geom_point() +
theme_wsj() +
scale_colour_wsj("colors6", "") +
ggtitle("Diamond Prices")
Theme and color palettes based on the defaults in Google Docs.
ggplot(dsamp, aes(x = carat, y = price, colour = clarity)) +
geom_point() +
theme_gdocs() +
ggtitle("Diamonds") +
scale_color_gdocs()
Theme and color and shape palettes based on the defaults in LibreOffice Calc.
ggplot(dsamp, aes(x = carat, y = price, colour=clarity)) +
geom_point() +
theme_calc() +
ggtitle("Diamonds") +
scale_color_calc()
Theme and color palettes based on the pander package.
ggplot(dsamp, aes(x = carat, y = price, colour = clarity)) +
geom_point() +
theme_pander() +
scale_colour_pander()
ggplot(dsamp, aes(x = clarity, fill = cut)) +
geom_bar() +
theme_pander() +
scale_fill_pander()
A theme that approximates the style of plots in Highcharts JS.
(qplot(carat, price, data = dsamp, colour = cut)
+ theme_hc()
+ scale_colour_hc()
+ ggtitle("Diamonds Are Forever"))
(qplot(carat, price, data = dsamp, colour = cut)
+ theme_hc(bgcolor = "darkunica")
+ scale_colour_hc("darkunica")
+ ggtitle("Diamonds Are Forever"))
dtemp <- data.frame(months = factor(rep(substr(month.name,1,3), 4), levels = substr(month.name,1,3)),
city = rep(c("Tokyo", "New York", "Berlin", "London"), each = 12),
temp = c(7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6,
-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5,
-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0,
3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8))
ggplot(dtemp, aes(x = months, y = temp, group = city, color = city)) +
geom_line() +
geom_point(size = 1.1) +
ggtitle("Monthly Average Temperature") +
theme_hc() +
scale_colour_hc()
ggplot(dtemp, aes(x = months, y = temp, group = city, color = city)) +
geom_line() +
geom_point(size = 1.1) +
ggtitle("Monthly Average Temperature") +
theme_hc(bgcolor = "darkunica") +
scale_fill_hc("darkunica")
A theme useful for displaying maps.
library("maps")
us <- fortify(map_data("state"), region = "region")
ggplot() +
geom_map(data = us, map = us,
aes(x = long, y = lat, map_id = region, group = group),
fill = "white", color = "black", size = 0.25) +
coord_map("albers", lat0 = 39, lat1 = 45) +
theme_map()